/**
 * 消息提示工具
 * 封装ElementPlus的ElMessage组件，解决调用方式问题
 */

import { ElMessage, ElMessageBox } from "element-plus";

/**
 * 显示成功消息
 * @param {string|object} message - 消息内容或选项对象
 * @param {number} [duration=3000] - 显示时间（毫秒）
 */
export function showSuccess(message, duration = 3000) {
    if (typeof message === "string") {
        ElMessage.success({
            message,
            duration,
        });
    } else {
        ElMessage.success(message);
    }
}

/**
 * 显示警告消息
 * @param {string|object} message - 消息内容或选项对象
 * @param {number} [duration=3000] - 显示时间（毫秒）
 */
export function showWarning(message, duration = 3000) {
    if (typeof message === "string") {
        ElMessage.warning({
            message,
            duration,
        });
    } else {
        ElMessage.warning(message);
    }
}

/**
 * 显示错误消息
 * @param {string|object} message - 消息内容或选项对象
 * @param {number} [duration=3000] - 显示时间（毫秒）
 */
export function showError(message, duration = 3000) {
    if (typeof message === "string") {
        ElMessage.error({
            message,
            duration,
        });
    } else {
        ElMessage.error(message);
    }
}

/**
 * 显示信息消息
 * @param {string|object} message - 消息内容或选项对象
 * @param {number} [duration=3000] - 显示时间（毫秒）
 */
export function showInfo(message, duration = 3000) {
    if (typeof message === "string") {
        ElMessage.info({
            message,
            duration,
        });
    } else {
        ElMessage.info(message);
    }
}

/**
 * 显示确认对话框
 * @param {string} message - 提示信息
 * @param {string} title - 标题
 * @param {object} options - 配置选项
 * @returns {Promise} - 返回Promise
 */
export function showConfirm(message, title, options = {}) {
    return ElMessageBox.confirm(message, title, options);
}

/**
 * 显示提示对话框
 * @param {string} message - 提示信息
 * @param {string} title - 标题
 * @param {object} options - 配置选项
 * @returns {Promise} - 返回Promise
 */
export function showAlert(message, title, options = {}) {
    return ElMessageBox.alert(message, title, options);
}

/**
 * 显示输入对话框
 * @param {string} message - 提示信息
 * @param {string} title - 标题
 * @param {object} options - 配置选项
 * @returns {Promise} - 返回Promise
 */
export function showPrompt(message, title, options = {}) {
    return ElMessageBox.prompt(message, title, options);
}

/**
 * 关闭所有消息
 */
export function closeAllMessages() {
    ElMessage.closeAll();
}

// 导出默认对象
export default {
    success: showSuccess,
    warning: showWarning,
    error: showError,
    info: showInfo,
    confirm: showConfirm,
    alert: showAlert,
    prompt: showPrompt,
    closeAll: closeAllMessages,
};
